FISH-14066 Jakarta Agentic AI: use released API 1.0.0-M1 and EE11 TCK branch - #8331
Conversation
…r and agentic-ai-core)
…flowScopeContext, WorkflowScopeManager)
…ayara distribution
…jakarta-agentic-ai-1-0-tck-support-in-payara-server
…ery when @outcome failed
…croProfile Config Evolve the internal LlmBackend SPI to carry role-tagged conversation turns and an optional system prompt, and store assistant replies in LargeLanguageModelImpl so per-workflow conversational state is complete and providers receive a correctly alternating history. Add Ollama and Anthropic backends (raw java.net.http + JSON-B, no SDK) and an LlmBackendFactory that selects the provider from MicroProfile Config under payara.agentic.llm.*. The Anthropic backend marks the system prompt with cache_control for prompt caching across workflow phases. The no-op backend remains the default when no provider is configured. Wire the factory into AgenticAIExtension and add the microprofile-config-api dependency.
…generator quickstart: a minimal @agent that answers a question, exercising the @Trigger/@Decision/@Action/@outcome phases. Selects a small local Ollama model via MicroProfile Config and ships a CI-safe Arquillian IT that uses a stub LargeLanguageModel, so it runs without a live model. tutorial generator: an agent that writes a field-by-field guide for a Customer registration form (contract Azul Payara Server) and refines it through a chat loop, passing the current HTML plus the instruction each turn. Uses the Anthropic provider, ships a side-by-side form/guide UI, and a CI-safe IT with a stub model. Register both modules in the payara-samples reactor.
… configurable LLM backends) into the samples branch
… sample - Add VertexLlmBackend: authenticates via ADC (gcloud subprocess) or GOOGLE_ACCESS_TOKEN env var; builds the rawPredict endpoint URL handling the 'global' pseudo-region; sends anthropic_version in the request body as required by Vertex AI - Register 'vertex' provider in LlmBackendFactory; project-id and region fall back to the ANTHROPIC_VERTEX_PROJECT_ID / CLOUD_ML_REGION env vars - Switch sample config to vertex provider with claude-sonnet-4-6 model - Update system prompt to suppress the form-level title/intro in generated HTML - Redesign index.html with Azul brand tokens: navy header, white cards, Inter font, pill buttons (#0055cc), and chat bubbles styled after the brand Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… chat - Redesign UI: form centred on the left; clicking a field slides in a contextual panel on the right showing only that field's AI explanation - Add POST /api/tutorial/refine-field endpoint: isolates one field's description, refines it via the agent, and merges the result back into the full guide JSON (other fields preserved) - Switch agent prompts and system prompt to return structured JSON (fieldName → plain-text explanation) instead of a free-form HTML fragment - Per-field chat history: each field keeps its own conversation thread, restored when the user switches between fields - Toast notification after generation guides the user to click a field - Guide panel styled to match the form card (white, clean border); removed metallic gradient - Graceful handling of non-JSON agent responses in the chat Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-agentic-ai-on-payara-server
…erge Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…nt-samples-with-jakarta-agentic-ai-on-payara-server
…ON_JSON The test requests TEXT_HTML and the store holds HTML; the wrong @produces annotation caused HTTP 406 on every CI run. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…lAgent The stub checked for "Apply this change requested" but TutorialAgent sends "Apply this change to the explanations", so refine always returned GENERATED. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Rename local variable `html` to `content` in TutorialAgent.render() to avoid confusion with JSON output - Add Logger to TutorialResource and log caught exceptions in extractField and mergeField instead of silently discarding them - Add Javadoc to TutorialStore explaining why @ApplicationScoped + volatile is intentional (guide must persist across generate/refine requests) - Add refinesField IT test covering the /api/tutorial/refine-field endpoint Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…to FISH-13709-create-agent-samples-with-jakarta-agentic-ai-on-payara-server
…/ai/agent/engine/ClassMethodOrder.java Co-authored-by: Alfonso Valdez <alfonso.altamirano@payara.fish>
…/ai/agent/engine/ClassMethodOrder.java Co-authored-by: Alfonso Valdez <alfonso.altamirano@payara.fish>
…/ai/agent/engine/WorkflowEngine.java Co-authored-by: Alfonso Valdez <alfonso.altamirano@payara.fish>
…/ai/agent/engine/WorkflowEngine.java Co-authored-by: Alfonso Valdez <alfonso.altamirano@payara.fish>
…/ai/agent/engine/WorkflowEngine.java Co-authored-by: Alfonso Valdez <alfonso.altamirano@payara.fish>
…/ai/agent/extension/AgenticAIExtension.java Co-authored-by: Alfonso Valdez <alfonso.altamirano@payara.fish>
…-jakarta-agentic-ai-1-0-tck-support-in-payara-server
…-jakarta-agentic-ai-1-0-tck-support-in-payara-server
…ta-agentic-ai-1-0-tck-support-in-payara-server FISH-13708 implement jakarta agentic ai 1 0 tck support in payara server
…to FISH-13709-create-agent-samples-with-jakarta-agentic-ai-on-payara-server
…mples-with-jakarta-agentic-ai-on-payara-server FISH-13709 Add Jakarta Agentic AI samples (quickstart and tutorial generator)
…ntic-AI # Conflicts: # Jenkinsfile
…ic-ai modules The agentic-ai modules exist only on the Agentic AI branch, so the version bump merged from main (7.2026.7 -> 7.2026.8) did not touch them and they did not appear as merge conflicts. This left the agentic-ai packager building as 7.2026.7, so payara-web-featureset (7.2026.8) could not resolve the agentic-ai:zip:7.2026.8 dependency and the build failed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Update the jakarta.agentic-ai-api dependency from 1.0.0-SNAPSHOT to the released 1.0.0-M1 version available on Maven Central. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Point the Jakarta Agentic AI TCK stage at the EE11 branch of the jakartaee-10-tck-runners repository. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ai-1-0-spec FISH-13708: Fix stale parent versions (7.2026.7 -> 7.2026.8) in agentic-ai modules
| </goals> | ||
| <configuration> | ||
| <instructions> | ||
| <Export-Package/> |
There was a problem hiding this comment.
What is the reasoning behind not using the default config?
There was a problem hiding this comment.
This module is an internal implementation module (fish.payara.server.internal.agentic-ai), so it shouldn't export any packages for OSGi consumption. The empty <Export-Package/> keeps every package private instead of letting bnd fall back to exporting the module's packages. It mirrors the Jakarta Data implementation module (appserver/data/data-core), which uses the identical config for the same reason. I've added a comment to the pom explaining this.
There was a problem hiding this comment.
Almost all of our modules are internal only and export their OSGi contents though. I'm not convinced that your argument is correct without some more details
| <plugin> | ||
| <groupId>org.apache.felix</groupId> | ||
| <artifactId>maven-bundle-plugin</artifactId> | ||
| <executions> | ||
| <execution> | ||
| <id>osgi-bundle</id> | ||
| <phase>package</phase> | ||
| <goals> | ||
| <goal>bundle</goal> | ||
| </goals> | ||
| <configuration> | ||
| <instructions> | ||
| <Embed-Dependency>*;scope=compile;inline=true</Embed-Dependency> | ||
| <Export-Package>*</Export-Package> | ||
| <Import-Package>*</Import-Package> | ||
| <Private-Package>!*</Private-Package> | ||
| <HK2-Bundle-Name>${project.groupId}:${project.artifactId}</HK2-Bundle-Name> | ||
| </instructions> | ||
| <unpackBundle>true</unpackBundle> | ||
| </configuration> | ||
| </execution> | ||
| </executions> | ||
| </plugin> |
There was a problem hiding this comment.
We should probably raise an issue to OSGi-ify the API so that we don't have to rely on this
There was a problem hiding this comment.
@Pandrex247 should I create an internal JIRA ticket for us? Or you mean create an issue in the Jakarta Agentic AI API project (https://github.com/jakartaee/agentic-ai)?
There was a problem hiding this comment.
Raised an issue on their tracker to publish the API as an OSGi bundle: jakartaee/agentic-ai#55 - once that's done we can drop this wrapper module.
Replace the bespoke inline git-clone + mvn stage with delegation to the reusable TCKs/JakartaEE-11-TCK job, matching how the other TCK stages run. The agentic-ai suite support was added to that shared pipeline (payara/EngineeringJenkinsjobs#495). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…rsion
Replace the hardcoded 1.0.0-M1 version of jakarta.agentic-ai-api with the
${jakarta.agentic-ai-api.version} property (defined in the root
payara-aggregator pom) in agentic-ai-core and the two agentic-ai samples,
so the version is managed in a single place.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pandrex247
left a comment
There was a problem hiding this comment.
If we're adding it to payara-web, I feel like we should also be adding it to Embedded and Micro?
Also I don't feel like we should be running the TCK against every single PR - this is quite a niche thing.
| stage('MicroProfile OpenAPI TCK') { | ||
| agent { | ||
| label 'general-purpose' | ||
| } | ||
| steps { | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Running MP OpenAPI TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| build job: 'TCKs/MP-TCKs', | ||
| parameters: [ | ||
| string(name: 'buildProject', value: 'Build'), | ||
| string(name: 'payaraBuildNumber', value: buildId), | ||
| string(name: 'repoOrg', value: 'payara'), | ||
| string(name: 'testBranchCommitOrTag', value: 'microprofile-7.1'), | ||
| string(name: 'suites', value: 'OpenAPI'), | ||
| string(name: 'jdkVer', value: 'zulu-21'), | ||
| string(name: 'distribution', value: 'full') | ||
| ] | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Ran MP OpenAPI TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| } | ||
| } | ||
| stage('MicroProfile OpenTelemetry JVM Metrics TCK') { | ||
| agent { | ||
| label 'general-purpose' | ||
| } | ||
| steps { | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Running MP OpenTelemetry JVM Metrics TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| build job: 'TCKs/MP-TCKs', | ||
| parameters: [ | ||
| string(name: 'buildProject', value: 'Build'), | ||
| string(name: 'payaraBuildNumber', value: buildId), | ||
| string(name: 'repoOrg', value: 'payara'), | ||
| string(name: 'testBranchCommitOrTag', value: 'microprofile-7.1'), | ||
| string(name: 'suites', value: 'OpenTelemetry-JVM-Metrics-Runtime'), | ||
| string(name: 'jdkVer', value: 'zulu-21'), | ||
| string(name: 'distribution', value: 'full') | ||
| ] | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Ran MP OpenTelemetry JVM Metrics TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| } | ||
| } | ||
| stage('MicroProfile OpenTelemetry JVM Metrics Application TCK') { | ||
| agent { | ||
| label 'general-purpose' | ||
| } | ||
| steps { | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Running MP OpenTelemetry JVM Metrics Application TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| build job: 'TCKs/MP-TCKs', | ||
| parameters: [ | ||
| string(name: 'buildProject', value: 'Build'), | ||
| string(name: 'payaraBuildNumber', value: buildId), | ||
| string(name: 'repoOrg', value: 'payara'), | ||
| string(name: 'testBranchCommitOrTag', value: 'microprofile-7.1'), | ||
| string(name: 'suites', value: 'OpenTelemetry-JVM-Metrics-Application'), | ||
| string(name: 'jdkVer', value: 'zulu-21'), | ||
| string(name: 'distribution', value: 'full') | ||
| ] | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Ran MP OpenTelemetry JVM Metrics Application TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| } | ||
| } | ||
| stage('MicroProfile OpenTelemetry Tracing Logging TCK') { | ||
| agent { | ||
| label 'general-purpose' | ||
| } | ||
| steps { | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Running MP OpenTelemetry Tracing Logging TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| build job: 'TCKs/MP-TCKs', | ||
| parameters: [ | ||
| string(name: 'buildProject', value: 'Build'), | ||
| string(name: 'payaraBuildNumber', value: buildId), | ||
| string(name: 'repoOrg', value: 'payara'), | ||
| string(name: 'testBranchCommitOrTag', value: 'microprofile-7.1'), | ||
| string(name: 'suites', value: 'OpenTelemetry-Tracing-Logging'), | ||
| string(name: 'jdkVer', value: 'zulu-21'), | ||
| string(name: 'distribution', value: 'full') | ||
| ] | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Ran MP OpenTelemetry Tracing Logging TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| } | ||
| } | ||
| stage('MicroProfile REST Client TCK') { | ||
| agent { | ||
| label 'general-purpose' | ||
| } | ||
| steps { | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Running MP REST Client TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| build job: 'TCKs/MP-TCKs', | ||
| parameters: [ | ||
| string(name: 'buildProject', value: 'Build'), | ||
| string(name: 'payaraBuildNumber', value: buildId), | ||
| string(name: 'repoOrg', value: 'payara'), | ||
| string(name: 'testBranchCommitOrTag', value: 'microprofile-7.1'), | ||
| string(name: 'suites', value: 'Rest-Client'), | ||
| string(name: 'jdkVer', value: 'zulu-21'), | ||
| string(name: 'distribution', value: 'full') | ||
| ] | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Ran MP REST Client TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| } | ||
| } | ||
| stage('MicroProfile OpenAPI TCK') { | ||
| agent { | ||
| label 'general-purpose' | ||
| } | ||
| steps { | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Running MP OpenAPI TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| build job: 'TCKs/MP-TCKs', | ||
| parameters: [ | ||
| string(name: 'buildProject', value: 'Build'), | ||
| string(name: 'payaraBuildNumber', value: buildId), | ||
| string(name: 'repoOrg', value: 'payara'), | ||
| string(name: 'testBranchCommitOrTag', value: 'microprofile-7.1'), | ||
| string(name: 'suites', value: 'OpenAPI'), | ||
| string(name: 'jdkVer', value: 'zulu-21'), | ||
| string(name: 'distribution', value: 'full') | ||
| ] | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Ran MP OpenAPI TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| } | ||
| } | ||
| stage('MicroProfile OpenTelemetry JVM Metrics TCK') { | ||
| agent { | ||
| label 'general-purpose' | ||
| } | ||
| steps { | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Running MP OpenTelemetry JVM Metrics TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| build job: 'TCKs/MP-TCKs', | ||
| parameters: [ | ||
| string(name: 'buildProject', value: 'Build'), | ||
| string(name: 'payaraBuildNumber', value: buildId), | ||
| string(name: 'repoOrg', value: 'payara'), | ||
| string(name: 'testBranchCommitOrTag', value: 'microprofile-7.1'), | ||
| string(name: 'suites', value: 'OpenTelemetry-JVM-Metrics-Runtime'), | ||
| string(name: 'jdkVer', value: 'zulu-21'), | ||
| string(name: 'distribution', value: 'full') | ||
| ] | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Ran MP OpenTelemetry JVM Metrics TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| } | ||
| } | ||
| stage('MicroProfile OpenTelemetry JVM Metrics Application TCK') { | ||
| agent { | ||
| label 'general-purpose' | ||
| } | ||
| steps { | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Running MP OpenTelemetry JVM Metrics Application TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| build job: 'TCKs/MP-TCKs', | ||
| parameters: [ | ||
| string(name: 'buildProject', value: 'Build'), | ||
| string(name: 'payaraBuildNumber', value: buildId), | ||
| string(name: 'repoOrg', value: 'payara'), | ||
| string(name: 'testBranchCommitOrTag', value: 'microprofile-7.1'), | ||
| string(name: 'suites', value: 'OpenTelemetry-JVM-Metrics-Application'), | ||
| string(name: 'jdkVer', value: 'zulu-21'), | ||
| string(name: 'distribution', value: 'full') | ||
| ] | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Ran MP OpenTelemetry JVM Metrics Application TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| } | ||
| } | ||
| stage('MicroProfile OpenTelemetry Tracing Logging TCK') { | ||
| agent { | ||
| label 'general-purpose' | ||
| } | ||
| steps { | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Running MP OpenTelemetry Tracing Logging TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| build job: 'TCKs/MP-TCKs', | ||
| parameters: [ | ||
| string(name: 'buildProject', value: 'Build'), | ||
| string(name: 'payaraBuildNumber', value: buildId), | ||
| string(name: 'repoOrg', value: 'payara'), | ||
| string(name: 'testBranchCommitOrTag', value: 'microprofile-7.1'), | ||
| string(name: 'suites', value: 'OpenTelemetry-Tracing-Logging'), | ||
| string(name: 'jdkVer', value: 'zulu-21'), | ||
| string(name: 'distribution', value: 'full') | ||
| ] | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Ran MP OpenTelemetry Tracing Logging TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| } | ||
| } | ||
| stage('MicroProfile REST Client TCK') { | ||
| agent { | ||
| label 'general-purpose' | ||
| } | ||
| steps { | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Running MP REST Client TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| build job: 'TCKs/MP-TCKs', | ||
| parameters: [ | ||
| string(name: 'buildProject', value: 'Build'), | ||
| string(name: 'payaraBuildNumber', value: buildId), | ||
| string(name: 'repoOrg', value: 'payara'), | ||
| string(name: 'testBranchCommitOrTag', value: 'microprofile-7.1'), | ||
| string(name: 'suites', value: 'Rest-Client'), | ||
| string(name: 'jdkVer', value: 'zulu-21'), | ||
| string(name: 'distribution', value: 'full') | ||
| ] | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Ran MP REST Client TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| } | ||
| } |
There was a problem hiding this comment.
What is going on here? Why are so many lines being changed?
| stage('Jakarta Agentic AI TCK') { | ||
| agent { | ||
| label 'general-purpose' | ||
| } | ||
| steps { | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Running Jakarta Agentic AI TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| build job: 'TCKs/JakartaEE-11-TCK', | ||
| parameters: [ | ||
| string(name: 'buildProject', value: 'Build'), | ||
| string(name: 'payaraBuildNumber', value: buildId), | ||
| string(name: 'payaraDistribution', value: 'Full'), | ||
| string(name: 'tck_profile', value: 'Full'), | ||
| string(name: 'jdk_version', value: 'zulu-21'), | ||
| string(name: 'tck_suites', value: 'agentic-ai'), | ||
| string(name: 'specificRunnerBranchCommitOrTag', value: 'EE11'), | ||
| string(name: 'runnerRepoOrg', value: 'payara') | ||
| ] | ||
| echo '*#*#*#*#*#*#*#*#*#*#*#*# Ran Jakarta Agentic AI TCK *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#' | ||
| } | ||
| } |
There was a problem hiding this comment.
This raises a question: should we be running the TCK against every single PR?
I don't feel like we should be tbh - this feels much more like a weekly TCK run thing
| <!-- Temporary dependencies while EE11 in development, remove once EE11 fully released --> | ||
| <dependency> | ||
| <groupId>jakarta.ws.rs</groupId> | ||
| <artifactId>jakarta.ws.rs-api</artifactId> | ||
| <scope>provided</scope> | ||
| </dependency> | ||
| <dependency> | ||
| <groupId>jakarta.enterprise</groupId> | ||
| <artifactId>jakarta.enterprise.cdi-api</artifactId> | ||
| <scope>provided</scope> | ||
| </dependency> | ||
| <dependency> | ||
| <groupId>jakarta.inject</groupId> | ||
| <artifactId>jakarta.inject-api</artifactId> | ||
| <scope>provided</scope> | ||
| </dependency> | ||
| <!-- End of temporary dependencies --> |
There was a problem hiding this comment.
EE 11 is released? Surely all of these are included in the jakarta.jakartaee-api dependency
| <!-- Temporary dependencies while EE11 in development, remove once EE11 fully released --> | ||
| <dependency> | ||
| <groupId>jakarta.ws.rs</groupId> | ||
| <artifactId>jakarta.ws.rs-api</artifactId> | ||
| <scope>provided</scope> | ||
| </dependency> | ||
| <dependency> | ||
| <groupId>jakarta.enterprise</groupId> | ||
| <artifactId>jakarta.enterprise.cdi-api</artifactId> | ||
| <scope>provided</scope> | ||
| </dependency> | ||
| <dependency> | ||
| <groupId>jakarta.inject</groupId> | ||
| <artifactId>jakarta.inject-api</artifactId> | ||
| <scope>provided</scope> | ||
| </dependency> | ||
| <!-- End of temporary dependencies --> |
| xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_4_0.xsd" | ||
| version="4.0" bean-discovery-mode="all"> |
There was a problem hiding this comment.
EE11 is CDI 4.1 - this is an EE10 beans.xml
| xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_4_0.xsd" | ||
| version="4.0" bean-discovery-mode="all"> |
There was a problem hiding this comment.
This is an EE 10 beans.xml - should be 4.1
| </goals> | ||
| <configuration> | ||
| <instructions> | ||
| <Export-Package/> |
There was a problem hiding this comment.
Almost all of our modules are internal only and export their OSGi contents though. I'm not convinced that your argument is correct without some more details
|
Issues will be created to iterate on my review comments |
Description
This PR brings the Jakarta Agentic AI integration branch up to date and switches the API dependency to a released version:
payara/maininto the branch.1.0.0-M1(available on Maven Central) instead of the1.0.0-SNAPSHOTversion.Jenkinsfileat theEE11branch of thejakartaee-10-tck-runnersrepository.Dependency
This PR depends on payara/jakartaee-10-tck-runners#213 and should be merged together with it.
Testing performed
CI / Jenkins pipeline (including the Jakarta Agentic AI TCK stage).